package com.tanhua.manager.job;

import com.tanhua.manager.service.AnalysisService;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 要实现定时任务，只需要两步：
 *      1. 在引导类上加注解@EnableScheduling
 *      2. 创建一个任务类，在类里方法上加注解@Scheduled(cron="表达式")
 * cron表达式说明：由六个域组成，域之间使用空格隔开
 *      语法： 秒 分 时 日 月 周
 *      每个域上都支持一些特殊符号：
 *          星号*：表示所有合法值都会触发
 *          问号?：表示不设置值。通常用在日和周域上。
 *              如果同时设置了日和周，可能会导致不可预估的后果
 *              注意：日和周两个域，只能设置一个值，另外一个值要设置成?
 *          逗号,：表示指定多个值
 *          横杠-：表示指定一个范围值
 *          斜杠/：表示递增值
 *
 *
 *          字符L：表示最后一个值，可以用在日和周域上
 *              比如在周域上设置了  1L，表示每月最后一周触发；  3L，每月的最后一个周二触发
 *
 * 定时分析日志的任务
 *      要求：每隔半小时执行一次
 *      cron：0 0/30 * * * ?
 *
 * @author liuyp
 * @date 2021/02/24
 */
@Slf4j
@Component
public class AnalysisLogJob {

    @Autowired
    private AnalysisService analysisService;

    @Scheduled(cron = "0 0/30 * * * ?")
    // @Scheduled(cron = "0 * * * * ?")
    public void analysis(){
        log.info("===定时分析日志【开始】===");

        analysisService.analysisLog();

        log.info("===定时分析日志【完成】===");
    }
}
